/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 * 
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* printListReversingly(struct ListNode* head) {
    if(head == NULL) 
        return NULL;//如果这个链表是空的就返回空
    int count = 0;//记录个数
    struct ListNode * b = head;//让b来遍历链表,应为这是单链表head丢了就没法玩了
    //记录有多少个数
    while(b -> next != NULL) {
        count++;
        b = b -> next;
    }
    //开count个空间。应为count长度要比链表实际长度少1个数所以加1，可以带入 2 3 5 自己推一下
    int* arr=(int*)malloc(sizeof(int) * count + 1);
    b = head;//重新让b指向head
    while(b -> next != NULL) {//重新遍历链表
        arr[count--] = b -> val;//应为count已经确定了链表多长所以可以用来当数组的下标
        b = b -> next;
    }
    arr[count] = b -> val;//这个和上面的count一样会少写一个，可以带入 2 3 5 自己推一下
    return arr;//返回
}